package cn.middle.remote;

import java.net.SocketAddress;

import cn.middle.remote.enums.NodeState;
import cn.middle.remote.enums.NodeType;

public interface Node {
	
	/**
	 * 节点类型
	 * @return
	 */
	public NodeType getNodeType();
	/**
	 * 节点状态是否正常
	 * @return
	 */
	public boolean isNormal();
	
	/**
	 * 是否已关闭
	 * @return
	 */
	public boolean isClose();
	
	/**
	 * 节点状态
	 * @return
	 */
	public NodeState getNodeState();
	
	
	/**
	 * 关闭节点
	 */
	public void close();
	
	/**
	 * 延迟几秒后关闭节点
	 * @param timeout
	 */
	public void close(int timeout);
	
	/**
	 *目标地址
	 * @return
	 */
	SocketAddress getRemoteSocketAddress();
	/**
	 * 本地地址
	 * @return
	 */
	SocketAddress getLocalSocketAddress();
	

}
